โมเดลภาษาคืออะไร

เสร็จสมบูรณ์เมื่อ

แอปพลิเคชัน AI ที่สร้างขึ้นนั้นขับเคลื่อนโดย โมเดลภาษาซึ่งเป็นแบบจําลองการเรียนรู้ของเครื่องชนิดพิเศษที่คุณสามารถใช้เพื่อดําเนินการ การประมวลผลภาษาธรรมชาติ (NLP) รวมถึง:

  • การกําหนด ความรู้สึก หรือการจัดประเภทข้อความภาษาธรรมชาติ
  • การสรุปข้อความ
  • การเปรียบเทียบแหล่งข้อมูลข้อความหลายแหล่งเพื่อความคล้ายคลึงกันเชิงความหมาย
  • สร้างภาษาธรรมชาติใหม่

ในขณะที่หลักการทางคณิตศาสตร์ที่อยู่เบื้องหลังโมเดลภาษาเหล่านี้อาจซับซ้อน แต่ความเข้าใจพื้นฐานของสถาปัตยกรรมที่ใช้ในการนําไปใช้สามารถช่วยให้คุณเข้าใจแนวคิดเกี่ยวกับวิธีทํางานได้

แบบจําลอง Transformer

แบบจําลองการเรียนรู้ของเครื่องสําหรับการประมวลผลภาษาธรรมชาติมีการพัฒนามานานหลายปี แบบจําลองภาษาขนาดใหญ่ที่ทันสมัยของวันนี้จะขึ้นอยู่กับสถาปัตยกรรม Transformer ซึ่งสร้างขึ้นและขยายเทคนิคบางอย่างที่ได้รับการพิสูจน์แล้วว่าประสบความสําเร็จในการสร้างแบบจําลอง คําศัพท์ เพื่อสนับสนุนงาน NLP และโดยเฉพาะอย่างยิ่งในการสร้างภาษา แบบจําลอง Transformer ได้รับการฝึกฝนด้วยข้อความจํานวนมากทําให้สามารถแสดงความสัมพันธ์เชิงความหมายระหว่างคําและใช้ความสัมพันธ์เหล่านั้นเพื่อกําหนดลําดับของข้อความที่สมเหตุสมผล โมเดล Transformer ที่มีคําศัพท์ขนาดใหญ่พอมีความสามารถในการสร้างการตอบสนองภาษาที่ยากต่อการแยกความแตกต่างจากการตอบสนองของมนุษย์

สถาปัตยกรรมแบบจําลอง Transformer ประกอบด้วยส่วนประกอบสองส่วน หรือ บล็อก:

  • บล็อก ตัวเข้ารหัส ที่สร้างการแสดงความหมายของคําศัพท์การฝึกอบรม
  • บล็อก ตัวถอดรหัส ที่สร้างลําดับภาษาใหม่

แผนภาพสถาปัตยกรรมแบบจําลอง Transformer ที่มีบล็อกตัวเข้ารหัสและตัวถอดรหัส

  1. แบบจําลองได้รับการฝึกด้วยข้อความภาษาธรรมชาติจํานวนมากซึ่งมักมาจากอินเทอร์เน็ตหรือแหล่งข้อมูลสาธารณะอื่น ๆ
  2. ลําดับของข้อความจะถูกแบ่งออกเป็นโทเค็น (เช่น คำแต่ละคำ) บล็อกตัวเข้ารหัสจะประมวลผลลำดับโทเค็นเหล่านี้โดยใช้เทคนิคที่เรียกว่าการใส่ใจเพื่อกำหนดความสัมพันธ์ระหว่างโทเค็น (เช่น โทเค็นใดที่มีอิทธิพลต่อการมีอยู่ของโทเค็นอื่นในลำดับ โทเค็นที่แตกต่างกันที่มักใช้ในบริบทเดียวกัน และอื่นๆ)
  3. ผลลัพธ์จากตัวเข้ารหัสคือคอลเลกชันของเวกเตอร์ (อาร์เรย์ตัวเลขแบบหลายค่า) ซึ่งแต่ละองค์ประกอบของเวกเตอร์แสดงถึงแอตทริบิวต์เชิงความหมายของโทเค็น เวกเตอร์เหล่านี้เรียกว่า Embeddings
  4. บล็อกตัวถอดรหัสทํางานบนลําดับใหม่ของโทเค็นข้อความ และใช้การฝังที่สร้างขึ้นโดยตัวเข้ารหัสเพื่อสร้างผลลัพธ์ภาษาธรรมชาติที่เหมาะสม
  5. ตัวอย่างเช่น กําหนดลําดับการป้อนข้อมูล เช่น "เมื่อสุนัขของฉันถูก" โมเดลสามารถใช้เทคนิคความสนใจในการวิเคราะห์โทเค็นอินพุตและแอตทริบิวต์ความหมายที่เข้ารหัสในการฝังเพื่อคาดการณ์ความสมบูรณ์ที่เหมาะสมของประโยค เช่น "ลูกสุนัข"

ในทางปฏิบัติ การใช้งานเฉพาะของสถาปัตยกรรมแตกต่างกัน ตัวอย่างเช่น การแสดงตัวเข้ารหัสแบบสองทิศทางจากแบบจําลอง Transformer (BERT) ที่พัฒนาโดย Google เพื่อสนับสนุนเครื่องมือค้นหาของพวกเขาใช้เฉพาะบล็อกตัวเข้ารหัสในขณะที่แบบจําลองการแปลงข้อมูลแบบกําหนดล่วงหน้าที่สร้าง (GPT) ที่พัฒนาโดย OpenAI ใช้เฉพาะบล็อกตัวถอดรหัสเท่านั้น

ในขณะที่คําอธิบายที่สมบูรณ์ของแบบจําลอง Transformer ทุกแง่มุมอยู่นอกขอบเขตของโมดูลนี้ คําอธิบายขององค์ประกอบสําคัญบางอย่างในหม้อแปลงสามารถช่วยให้คุณเข้าใจว่าแบบจําลองดังกล่าวสนับสนุน AI ที่ก่อให้เกิดได้อย่างไร

การแปลงโทเค็น

ขั้นตอนแรกในการฝึกแบบจําลอง Transformer คือการแยกย่อยข้อความการฝึกเป็น โทเค็น กล่าวคือระบุค่าข้อความที่ไม่ซ้ำกันแต่ละค่า เพื่อความเรียบง่ายคุณสามารถนึกภาพของแต่ละคําที่แตกต่างกันในข้อความการฝึกอบรมเป็นโทเค็น (แม้ว่าในความเป็นจริงโทเค็นสามารถสร้างขึ้นสําหรับคําบางส่วนหรือการรวมคําและเครื่องหมายวรรคตอน)

ตัวอย่างเช่น พิจารณาประโยคต่อไปนี้:

I heard a dog bark loudly at a cat

ในโทเค็นข้อความนี้ คุณสามารถระบุคําที่ไม่ต่อเนื่องแต่ละคําและกําหนด ID โทเค็นให้กับคําเหล่านั้นได้ ตัวอย่างเช่น:

- I (1)
- heard (2)
- a (3)
- dog (4)
- bark (5)
- loudly (6)
- at (7)
- *("a" is already tokenized as 3)*
- cat (8)

ในตอนนี้ คุณสามารถแสดงประโยคด้วยโทเค็น: {1 2 3 4 5 6 7 3 8} ในทํานองเดียวกันประโยค "ฉันได้ยินแมว" อาจถูกแสดงเป็น {1 2 3 8}

เมื่อคุณยังคงฝึกแบบจําลอง โทเค็นใหม่แต่ละโทเค็นในข้อความการฝึกจะถูกเพิ่มลงในคําศัพท์ด้วยรหัสโทเค็นที่เหมาะสม:

  • เหมียว (9)
  • สเก็ตบอร์ด (10)
  • และอื่นๆ...

ด้วยชุดข้อความการฝึกอบรมขนาดใหญ่พอจึงสามารถรวบรวมคําศัพท์ของโทเค็นหลายพันโทเค็นได้

Embeddings

แม้ว่าอาจจะสะดวกในการแสดงโทเค็นเป็นรหัสอย่างง่าย โดยพื้นฐานแล้วจะสร้างดัชนีสําหรับคําศัพท์ทั้งหมดในคําศัพท์ แต่ก็ไม่ได้บอกอะไรเราเกี่ยวกับความหมายของคําหรือความสัมพันธ์ระหว่างคําเหล่านั้น ในการสร้างคำศัพท์ที่รวบรวมความสัมพันธ์เชิงความหมายระหว่างโทเค็น เรากําหนดเวกเตอร์ตามบริบทที่เรียกว่า Embeddings ให้กับโทเค็นเหล่านั้น เวกเตอร์คือการแสดงข้อมูลเชิงตัวเลขที่มีค่าหลายค่า เช่น [10, 3, 1] โดยที่องค์ประกอบตัวเลขแต่ละตัวจะแสดงถึงแอตทริบิวต์เฉพาะของข้อมูล สําหรับโทเค็นภาษา แต่ละองค์ประกอบของเวกเตอร์ของโทเค็นแสดงแอตทริบิวต์ความหมายบางอย่างของโทเค็น หมวดหมู่เฉพาะสําหรับองค์ประกอบของเวกเตอร์ในโมเดลภาษาจะถูกกําหนดในระหว่างการฝึกตามวิธีการใช้คําร่วมกันหรือในบริบทที่คล้ายกัน

เวกเตอร์เป็นตัวแทนของเส้นในพื้นที่หลายมิติซึ่งอธิบาย ทิศทาง และ ระยะทาง ตามแกนหลายแกน (คุณสามารถสร้างความประทับใจให้เพื่อนทางคณิตศาสตร์ของคุณโดยการเรียก ความกว้าง และ ขนาด) อาจเป็นประโยชน์ที่จะคิดถึงองค์ประกอบในเวกเตอร์การฝังสําหรับโทเค็นเป็นการแสดงขั้นตอนตามเส้นทางในพื้นที่หลายมิติ ตัวอย่างเช่น เวกเตอร์ที่มีสามองค์ประกอบแสดงเส้นทางในพื้นที่ 3 มิติที่ค่าองค์ประกอบระบุหน่วยที่เดินทางไปข้างหน้า/ย้อนกลับ ซ้าย/ขวา และขึ้น/ลง โดยรวมเวกเตอร์อธิบายทิศทางและระยะทางของเส้นทางจากต้นกําเนิดไปยังจุดสิ้นสุด

องค์ประกอบของโทเค็นในช่องว่างการฝังแต่ละรายการแสดงถึงแอตทริบิวต์เชิงความหมายบางอย่างของโทเค็น ดังนั้น โทเค็นที่มีความหมายคล้ายคลึงกันควรส่งผลให้เกิดเวกเตอร์ที่มีทิศทางที่คล้ายกัน กล่าวอีกนัยหนึ่งคือ เวกเตอร์เหล่านั้นชี้ไปในทิศทางเดียวกัน เทคนิคที่เรียกว่า ความคล้ายคลึงกันของโคไซน์ ใช้เพื่อตรวจสอบว่าเวกเตอร์สองตัวมีทิศทางที่คล้ายกันหรือไม่ (โดยไม่คํานึงถึงระยะทาง) จึงเป็นตัวแทนคําที่เชื่อมโยงกันในเชิงความหมาย ตัวอย่างง่ายๆ สมมติว่าการฝังสําหรับโทเค็นของเราประกอบด้วยเวกเตอร์ที่มีสามองค์ประกอบ ตัวอย่างเช่น:

  • 4 ("สุนัข"): [10,3,2]
  • 8 ("แมว"): [10,3,1]
  • 9 ("ลูกสุนัข"): [5,2,1]
  • 10 (“สเก็ตบอร์ด”): [-3,3,2]

เราสามารถลงจุดเวกเตอร์เหล่านี้ในพื้นที่สามมิติเช่นนี้:

แผนภาพของเวกเตอร์โทเค็นที่ลงจุดในพื้นที่สามมิติ

เวกเตอร์ฝังตัวสำหรับ "สุนัข" และ "ลูกสุนัข" อธิบายเส้นทางในทิศทางที่เกือบจะเหมือนกัน ซึ่งค่อนข้างคล้ายคลึงกับทิศทางสำหรับ "แมว" อย่างไรก็ตามเวกเตอร์ที่ฝังไว้สำหรับ "สเก็ตบอร์ด" อธิบายการเดินทางในทิศทางที่แตกต่างกันมาก

หมายเหตุ

ตัวอย่างก่อนหน้านี้แสดงรูปแบบตัวอย่างง่ายๆ โดยที่การฝังแต่ละรายการมีเพียงสามมิติเท่านั้น โมเดลภาษาจริงยังมีมิติอื่นๆ อีกมากมาย

มีหลายวิธีที่คุณสามารถคํานวณการฝังที่เหมาะสมสําหรับชุดโทเค็นที่กําหนด รวมถึงอัลกอริทึมการสร้างโมเดลภาษา เช่น Word2Vec หรือ ตัวเข้ารหัส บล็อกในแบบจําลอง Transformer

ความสนใจ

ตัวเข้ารหัส และ ตัวถอดรหัส บล็อกในแบบจําลอง Transformer มีหลายเลเยอร์ที่สร้างเครือข่ายประสาทสําหรับแบบจําลอง เราไม่จําเป็นต้องลงในรายละเอียดของเลเยอร์เหล่านี้ทั้งหมด แต่มีประโยชน์ในการพิจารณาหนึ่งในเลเยอร์ประเภทที่ใช้ในทั้งสองบล็อก: เลเยอร์ ความสนใจ ความสนใจเป็นเทคนิคที่ใช้ในการตรวจสอบลำดับของโทเค็นข้อความและพยายามระบุปริมาณของความสัมพันธ์ระหว่างโทเค็นเหล่านั้น โดยเฉพาะอย่างยิ่ง การใส่ใจตนเอง เกี่ยวข้องกับการพิจารณาว่าโทเค็นอื่น ๆ รอบๆ โทเค็นเฉพาะหนึ่ง ๆ มีอิทธิพลต่อความหมายของโทเค็นนั้นอย่างไร

ในบล็อกตัวเข้ารหัส แต่ละโทเค็นจะถูกตรวจสอบอย่างรอบคอบในบริบท และการเข้ารหัสที่เหมาะสมจะถูกกําหนดสําหรับการฝังเวกเตอร์ ค่าเวกเตอร์จะขึ้นอยู่กับความสัมพันธ์ระหว่างโทเค็นกับโทเค็นอื่นๆ ที่มักปรากฏร่วมด้วย แนวทางเชิงบริบทนี้หมายความว่าคำเดียวกันอาจมีการฝังอยู่หลายรายการขึ้นอยู่กับบริบทที่ใช้ เช่น "เปลือกไม้" มีความหมายต่างจาก "ฉันได้ยินเสียงสุนัขเห่า"

ในบล็อกตัวถอดรหัส เลเยอร์ความสนใจจะถูกใช้เพื่อคาดการณ์โทเค็นถัดไปตามลําดับ สําหรับแต่ละโทเค็นที่สร้างขึ้น แบบจําลองมีเลเยอร์ความสนใจโดยคํานึงถึงลําดับโทเค็นจนถึงจุดนั้น แบบจําลองจะพิจารณาว่าโทเค็นใดมีอิทธิพลมากที่สุดเมื่อพิจารณาว่าโทเค็นถัดไปควรเป็นอย่างไร ตัวอย่างเช่น เมื่อกำหนดลำดับว่า "ฉันได้ยินเสียงสุนัข" เลเยอร์ความสนใจอาจกำหนดน้ำหนักให้กับโทเค็น "ได้ยิน" และ "สุนัข" มากขึ้นเมื่อพิจารณาคำถัดไปในลำดับ:

ฉัน ได้ยิน สุนัข [เห่า]

โปรดจําไว้ว่าเลเยอร์ความสนใจกําลังทํางานกับการแสดงเวกเตอร์ตัวเลขของโทเค็นไม่ใช่ข้อความจริง ในตัวถอดรหัส กระบวนการเริ่มต้นด้วยลําดับการฝังโทเค็นที่แสดงข้อความจะเสร็จสมบูรณ์ สิ่งแรกที่เกิดขึ้นคือเลเยอร์ การเข้ารหัสตามตำแหน่ง อีกเลเยอร์หนึ่งจะเพิ่มค่าลงในแต่ละการฝังเพื่อระบุตำแหน่งของเลเยอร์ดังกล่าวในลำดับ:

  • [1,5,6,2] (I)
  • [2,9,3,1] (ได้ยิน)
  • [3,1,1,2] (a)
  • [4,10,3,2] (สุนัข)

ในระหว่างการฝึกเป้าหมายคือการทํานายเวกเตอร์สําหรับโทเค็นสุดท้ายในลําดับที่ยึดตามโทเค็นก่อนหน้า เลเยอร์ความสนใจจะกำหนด น้ำหนัก เชิงตัวเลขให้กับแต่ละโทเค็นในลำดับที่ผ่านมา จะใช้ค่าดังกล่าวในการคำนวณเวกเตอร์ที่มีน้ำหนักซึ่งจะสร้าง คะแนนความสนใจ ที่สามารถนำไปใช้คำนวณเวกเตอร์ที่เป็นไปได้สำหรับโทเค็นถัดไปได้ ในทางปฏิบัติ เทคนิคที่เรียกว่า Multi-Head Attention ใช้องค์ประกอบที่แตกต่างกันของการฝังเพื่อคํานวณคะแนนความสนใจหลายคะแนน จากนั้นจะใช้เครือข่ายประสาทเพื่อประเมินโทเค็นที่เป็นไปได้ทั้งหมดเพื่อกําหนดโทเค็นที่น่าจะเป็นไปได้มากที่สุดที่จะดําเนินการตามลําดับต่อไป กระบวนการดำเนินต่อไปแบบวนซ้ำสำหรับแต่ละโทเค็นในลำดับ โดยที่ลำดับเอาท์พุทจนถึงขณะนี้ถูกใช้แบบถดถอยเป็นอินพุตสำหรับการวนซ้ำครั้งถัดไป ซึ่งก็คือการสร้างเอาท์พุทครั้งละหนึ่งโทเค็น

ภาพเคลื่อนไหวต่อไปนี้แสดงการแทนแบบง่ายของวิธีการทํางาน ในความเป็นจริง การคํานวณที่ดําเนินการโดยเลเยอร์ความสนใจมีความซับซ้อนมากขึ้น แต่สามารถทําให้หลักการง่ายขึ้นตามที่แสดง:

ภาพเคลื่อนไหวแสดงเลเยอร์ความสนใจที่กําหนดน้ำหนักให้กับโทเค็นและการคาดการณ์รายการถัดไป

  1. ลําดับของการฝังโทเค็นถูกป้อนลงในเลเยอร์ความสนใจ โทเค็นแต่ละรายการจะแสดงเป็นเวกเตอร์ของค่าตัวเลข
  2. เป้าหมายของตัวถอดรหัสคือการทํานายโทเค็นถัดไปในลําดับ ซึ่งจะเป็นเวกเตอร์ที่สอดคล้องกับการฝังในคําศัพท์ของแบบจําลอง’
  3. เลเยอร์ความสนใจจะประเมินลําดับจนถึงตอนนี้และกําหนดน้ำหนักให้กับแต่ละโทเค็นเพื่อแสดงอิทธิพลสัมพัทธ์ของพวกเขาในโทเค็นถัดไป
  4. น้ำหนักสามารถใช้ในการคํานวณเวกเตอร์ใหม่สําหรับโทเค็นถัดไปด้วยคะแนนความสนใจ Multi-Head Attention ใช้องค์ประกอบที่แตกต่างกันในการฝังเพื่อคํานวณโทเค็นทางเลือกหลายรายการ
  5. เครือข่ายประสาทที่เชื่อมต่ออย่างสมบูรณ์ใช้คะแนนในเวกเตอร์จากการคํานวณเพื่อคาดการณ์โทเค็นที่น่าจะเป็นไปได้มากที่สุดจากคําศัพท์ทั้งหมด
  6. เอาท์พุทที่ทํานายจะถูกผนวกเข้ากับลําดับจนถึงปัจจุบันซึ่งใช้เป็นข้อมูลป้อนเข้าสําหรับการทําซ้ําครั้งต่อไป

ในระหว่างการฝึกลําดับโทเค็นที่แท้จริงเป็นที่รู้จักกัน เราเพียงปกปิดโทเค็นที่มาภายหลังในลําดับกว่าตําแหน่งโทเค็นที่กําลังพิจารณา เช่นเดียวกับในเครือข่ายประสาทใด ๆ ค่าที่ทํานายสําหรับเวกเตอร์โทเค็นจะถูกเปรียบเทียบกับค่าจริงของเวกเตอร์ถัดไปในลำดับ และการสูญเสียจะถูกคำนวณ น้ำหนักจะถูกปรับทีละน้อยเพื่อลดการสูญเสียและปรับปรุงแบบจําลอง เมื่อใช้สำหรับการอนุมาน (คาดการณ์ลำดับโทเค็นใหม่) เลเยอร์ความสนใจที่ได้รับการฝึกจะใช้การถ่วงน้ำหนักเพื่อคาดการณ์โทเค็นที่น่าจะเป็นไปได้มากที่สุดในคำศัพท์ของแบบจำลองที่สอดคล้องทางความหมายกับลำดับจนถึงขณะนี้

ทั้งหมดนี้หมายความว่าแบบจําลอง Transformer เช่น GPT-4 (แบบจําลองที่อยู่เบื้องหลัง ChatGPT และ Bing) ถูกออกแบบมาเพื่อป้อนข้อความ (เรียกว่าพร้อมท์) และสร้างผลลัพธ์ที่ถูกต้องทางไวยากรณ์ (เรียกว่า เสร็จสมบูรณ์) โดยความเป็นจริงแล้ว “ความมหัศจรรย์” ของแบบจําลองนี้อยู่ที่ความสามารถในการร้อยเรียงประโยคที่มีความสอดคล้องกันเข้าด้วยกัน ความสามารถนี้ไม่ได้บ่งบอกถึง "ความรู้" หรือ "สติปัญญา" ของแบบจำลอง เพียงแค่มีคำศัพท์จำนวนมากและความสามารถในการสร้างลำดับคำที่มีความหมายเท่านั้น อย่างไรก็ตาม สิ่งที่ทําให้โมเดลภาษาขนาดใหญ่อย่าง GPT-4 มีประสิทธิภาพมากคือปริมาณข้อมูลที่แท้จริงที่ได้รับการฝึก (ข้อมูลสาธารณะและข้อมูลที่ได้รับอนุญาตจากอินเทอร์เน็ต) และความซับซ้อนของเครือข่าย การดําเนินการนี้จะเปิดใช้งานแบบจําลองเพื่อสร้างความสมบูรณ์ที่ยึดตามความสัมพันธ์ระหว่างคําในคําศัพท์ที่ได้รับการฝึกแบบจําลอง มักจะสร้างเอาต์พุตที่แยกไม่ออกจากการตอบสนองของมนุษย์ต่อพร้อมท์เดียวกัน